<?php
namespace Admin\Model;
use Think\Model;
class RoleModel extends Model 
{
	protected $insertFields = array('role_name');
	protected $updateFields = array('id','role_name');
	protected $_validate = array(
		array('role_name', '1,30', '的值最长不能超过 30 个字符！', 2, 'length', 3),
		array('role_name', '', '该用户已存在，请重新注册！', 2, 'unique', 3),

	);
	public function search($pageSize = 20)
	{
		/**************************************** 搜索 ****************************************/
		$where = array();
		/************************************* 翻页 ****************************************/
		$count = $this->alias('a')->where($where)->count();
		$page = new \Think\Page($count, $pageSize);
		// 配置翻页的样式
		$page->setConfig('prev', '上一页');
		$page->setConfig('next', '下一页');
		$data['page'] = $page->show();
		/************************************** 取数据 ******************************************/
		$data['data'] = $this->alias('a')
			->field('a.*,GROUP_CONCAT(c.pri_name)pri_name')
			->join(' LEFT JOIN __ROLE_PRI__ b ON a.id=b.role_id
			         LEFT JOIN __PRIVILEGE__ c ON b.pri_id=c.id')
			->where($where)
			->group('a.id')
			->limit($page->firstRow.','.$page->listRows)
			->select();
		return $data;
	}
	// 添加前
	protected function _before_insert(&$data, $option)
	{
	}
	// 添加后
	protected function _after_insert(&$data, $option)
	{
		$pri_id =I('post.pri_id');               //这里是权限的id
		$rpModel = D('role_pri');                //实例化权限角色中间表
		foreach($pri_id as $v){
			$rpModel->add(array(
				'pri_id'=>$v,                      //权限id 就是获取到表单里的id
				'role_id'=>$data['id'],          //角色id 就是在角色添加之后获取到的id
			));
		}
	}
	// 修改前
	protected function _before_update(&$data, $option)
	{
		$id = $option['where']['id'];
		$pri_id =I('post.pri_id');               //这里是权限的id
		$rpModel = D('role_pri');                //实例化权限角色中间表
		$rpModel->where(array('role_id'=>array('eq',$id)))->delete();
		foreach($pri_id as $v){
			$rpModel->add(array(
				'pri_id'=>$v,                      //权限id 就是获取到表单里的id
				'role_id'=>$id,
			));
		}
	}
	// 删除前
	protected function _before_delete($option)
	{
		if(is_array($option['where']['id']))
		{
			$this->error = '不支持批量删除';
			return FALSE;
		}
		//删除角色的时候先把角色和权限表的数据删除
		$rpModel = D('role_pri');
		$rpModel->where(array(
			'role_id'=>array('eq',$option['where']['id']),
		))->delete();

		//删除角色的时候先把角色和管理员表（中间表）的数据删除
		$arModel = D('admin_role');
		$arModel->where(array(
			'role_id'=>array('eq',$option['where']['id']),
		))->delete();
	}
	/************************************ 其他方法 ********************************************/
}